package com.bookocean.application.service;

import com.bookocean.application.common.BookConstants;
import com.bookocean.controller.dto.CloudHanPostDto;
import com.bookocean.controller.dto.CommentDto;
import com.bookocean.controller.dto.PageResultDto;
import com.bookocean.domain.service.CloudHanDomainService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 云汉页面应用服务
 * 
 * @author BookOcean
 * @since 2024-01-01
 */
@Service
@RequiredArgsConstructor
public class CloudHanApplicationService {

    private final CloudHanDomainService cloudHanDomainService;

    /**
     * 获取云汉页面书摘列表（支持最新/热门/分类筛选）
     * 
     * @param page 页码
     * @param pageSize 每页数量
     * @param sortType 排序方式 (latest: 最新, hot: 热门)
     * @param categoryId 分类ID（可选）
     * @param keyword 搜索关键词（可选）
     * @return 分页书摘列表
     */
    public PageResultDto<CloudHanPostDto> getCloudHanPosts(
            Integer page, Integer pageSize, String sortType, Integer categoryId, String keyword) {
        
        // 根据排序类型调用不同的方法
        if (BookConstants.HOT.equals(sortType)) {
            return cloudHanDomainService.getHotPosts(page, pageSize, categoryId);
        } else {
            // 默认最新排序
            return cloudHanDomainService.getLatestPosts(page, pageSize, categoryId);
        }
    }

    /**
     * 获取云汉页面热门书摘（点赞+评论排序）
     * 
     * @param page 页码
     * @param pageSize 每页数量
     * @param categoryId 分类ID（可选）
     * @return 分页热门书摘列表
     */
    public PageResultDto<CloudHanPostDto> getHotPosts(Integer page, Integer pageSize, Integer categoryId) {
        return cloudHanDomainService.getHotPosts(page, pageSize, categoryId);
    }

    /**
     * 获取云汉页面最新书摘
     * 
     * @param page 页码
     * @param pageSize 每页数量
     * @param categoryId 分类ID（可选）
     * @return 分页最新书摘列表
     */
    public PageResultDto<CloudHanPostDto> getLatestPosts(Integer page, Integer pageSize, Integer categoryId) {
        return cloudHanDomainService.getLatestPosts(page, pageSize, categoryId);
    }

    /**
     * 根据分类获取云汉页面书摘
     * 
     * @param categoryId 分类ID
     * @param page 页码
     * @param pageSize 每页数量
     * @param sortType 排序方式 (latest: 最新, hot: 热门)
     * @return 分页书摘列表
     */
    public PageResultDto<CloudHanPostDto> getPostsByCategory(
            Integer categoryId, Integer page, Integer pageSize, String sortType) {
        
        if (BookConstants.HOT.equals(sortType)) {
            return cloudHanDomainService.getHotPosts(page, pageSize, categoryId);
        } else {
            return cloudHanDomainService.getLatestPosts(page, pageSize, categoryId);
        }
    }

    /**
     * 搜索云汉页面书摘（书名/作者/内容模糊匹配）
     * 
     * @param keyword 搜索关键词
     * @param page 页码
     * @param pageSize 每页数量
     * @param categoryId 分类ID（可选）
     * @return 分页搜索结果
     */
    public PageResultDto<CloudHanPostDto> searchCloudHanPosts(
            String keyword, Integer page, Integer pageSize, Integer categoryId) {
        return cloudHanDomainService.searchCloudHanPosts(keyword, page, pageSize, categoryId);
    }

    /*
     * ========================================
     * 互动功能已迁移到 InteractionApplicationService
     * ========================================
     * 
     * 原有的点赞、收藏、评论相关方法已迁移到通用的 InteractionApplicationService，
     * 现在统一由 InteractionController 处理所有互动功能。
     * 
     * 这样做的好处：
     * 1. 避免重复代码
     * 2. 统一处理所有内容类型的互动功能
     * 3. 便于维护和扩展
     */
}
